home *** CD-ROM | disk | FTP | other *** search
/ Micromanía 90 / CDMM_90_1.ISO / Cycling Manager 2 / CyclingManager2Demo.exe / Disk1 / data1.cab / Game / DataCM2 / MenuServer / UCIClient.cnc < prev    next >
Encoding:
Text File  |  2002-05-10  |  5.1 KB  |  205 lines

  1.  
  2. func void GatewayConnect()
  3. {
  4.     if (!g_stGateway.m_pClient)
  5.     {
  6.         g_stGateway.m_pClient = NetClient_Create( g_stGateway.m_szIP, g_stGateway.m_iPort, MSGatewayInterface, MSGatewayConnectCB, MSGatewayDisconnectCB);
  7.     }
  8. }
  9.  
  10.  
  11. // **********************
  12. // *** network callbacks
  13. // **********************
  14.  
  15. func void MSGatewayConnectCB(Net_Client pClient)
  16. {
  17.     print(">> Connection to Gateway.\n");
  18.     pClient << mGateway_GameDistantLogin(
  19.         g_stGame.m_szLogin,
  20.         g_stGame.m_szPassword,
  21.         
  22.         g_stGame.m_szAdminLogin,
  23.         g_stGame.m_szAdminPassword,
  24.         
  25.         g_stGame.m_iMode);
  26. }
  27.  
  28. func void MSGatewayDisconnectCB(Net_Client pClient)
  29. {
  30.     print(">> Disconnection from Gateway.\n");
  31.     g_stGateway.m_pClient = G_pNullClient;
  32.  
  33.     // try to reconnect in 5s
  34.     CreateTimer(rand(10000),GatewayConnect);
  35. }
  36.  
  37. // **********************
  38. // *** incomming messages
  39. // **********************
  40.  
  41.  
  42. // gateway login ok
  43. func void fnGame_LoginOK()
  44. {
  45.     print(">> Gateway game login ok\n");
  46.  
  47.     var i32x i, iNumClients;
  48.     var Net_ClientList pClientList;
  49.     var Net_Client pUserClient;
  50.     var i32x iGuestId, iUserId;
  51.     var szx szLogin;
  52.     
  53.     var Net_Client pClient;
  54.     pClient = GetCurrentClient();
  55.  
  56.     // Launch server if needed
  57.     if (!g_pServer)
  58.     {
  59.         g_pServer=NetServer_Create(g_iServerPort,iUserLoginInterface,UserConnectCB,UserDisconnectCB, G_iNumClientList);
  60.     }
  61.     
  62.     if (g_pServer)
  63.     {
  64.         // Read the server port
  65.         g_iServerPort = NetServer_GetPort(g_pServer);
  66.  
  67.         println("--- Server Online on port " + itoa(g_iServerPort));
  68.  
  69.         // ready to proceed
  70.         pClient << mGateway_GameReady(g_iServerPort);
  71.  
  72.         // send connected users
  73.         pClientList = NetServer_GetClientList( g_pServer, G_iRegisteredClientList);
  74.         iNumClients = NetClientList_GetSize(pClientList);
  75.         
  76.         i = 0;
  77.         while (i<iNumClients)
  78.         {
  79.             pUserClient = NetClientList_GetClient(pClientList,i);
  80.             iUserId = NetClient_GetId(pUserClient);
  81.             szLogin = Join_GetStringFromKey(g_stJoins.m_iUser_szLogin,iUserId);
  82.             pClient << mGateway_UserConnection(szLogin);
  83.             i=i+1;
  84.         }
  85.         
  86.         // send connected guests
  87.         pClientList = NetServer_GetClientList( g_pServer, G_iGuestClientList);
  88.         iNumClients = NetClientList_GetSize(pClientList);
  89.         
  90.         i = 0;
  91.         while (i<iNumClients)
  92.         {
  93.             pUserClient = NetClientList_GetClient(pClientList,i);
  94.             iGuestId = NetClient_GetId(pUserClient);
  95.             szLogin = Join_GetStringFromKey(g_stJoins.m_iUser_GuestLogin,-iGuestId);
  96.             pClient << mGateway_UserConnection(szLogin);
  97.             i=i+1;
  98.         }
  99.     }
  100.     else
  101.     {
  102.         println("### ERROR ### unable to bind port " + itoa(g_iServerPort));
  103.     }
  104. }
  105.  
  106. // gateway login failed
  107. func void fnGame_LoginFailed()
  108. {
  109.     //MenuServer_Exit();
  110. }
  111.  
  112.  
  113. // gateway gives user authorization
  114. func void fnGame_UserAuthorization(szx _szLogin, szx _szAuthorization)
  115. {
  116.     var Net_Client pClient;
  117.     pClient = GetCurrentClient();
  118.  
  119.     var i32x iUserId;
  120.     iUserId        = Join_FindKeyFromStringData(    g_stJoins.m_iUser_szLogin, _szLogin);
  121.  
  122.     if (iUserId>0)
  123.     {
  124.         print("Received authorization for user ");print(_szLogin);print(":");println(_szAuthorization);
  125.  
  126.         Join_SetStringFromKey(g_stJoins.m_iUser_szPassword, iUserId,_szAuthorization);
  127.         pClient << mGateway_UserAuthorizationOk(_szLogin,_szAuthorization);
  128.     }
  129.     else
  130.     {
  131.         var i32x iGuestID;
  132.  
  133.         // Find free guest slot
  134.         iGuestID = Join_FindKeyFromIntData(g_stJoins.m_iUser_GuestFree,g_iGUEST_STATUS_Free);
  135.         if(iGuestID > 0)
  136.         {
  137.             // Okay for guest connection
  138.             print("Received authorization for guest user ");
  139.             println(_szLogin);
  140.             println(_szAuthorization);
  141.             println(itoa(iGuestID));
  142.  
  143.             // Fill guest slot
  144.             Join_SetIntFromKey(g_stJoins.m_iUser_GuestFree, iGuestID,g_iGUEST_STATUS_Guest);
  145.             Join_SetStringFromKey(g_stJoins.m_iUser_GuestLogin, iGuestID,_szLogin);
  146.             Join_SetStringFromKey(g_stJoins.m_iUser_GuestPassword, iGuestID,_szAuthorization);
  147.  
  148.             // Inform gateway
  149.             pClient << mGateway_UserAuthorizationOk(_szLogin,_szAuthorization);
  150.         }
  151.         else
  152.         {
  153.             println("Authorization failed for user : ");
  154.             println(_szLogin);
  155.             pClient << mGateway_UserAuthorizationFailed(_szLogin);
  156.         }
  157.     }
  158. }
  159.  
  160.  
  161.  
  162.  
  163.  
  164. // gateway kicks out user
  165. func void fnGame_UserDisconnect(szx _szLogin)
  166. {
  167.     print("Gateway kicks out user ");
  168.     println(_szLogin);
  169.  
  170.     var i32x iGuestID,iUserId;
  171.     iUserId        = Join_FindKeyFromStringData(    g_stJoins.m_iUser_szLogin, _szLogin);
  172.     if (iUserId>0)
  173.     {
  174.         // tutu debug : unsubscribed user has no team, no divisiom ?
  175.     
  176.         // find client
  177.         var Net_Client pClient;
  178.         var Net_ClientList pClientList;
  179.         pClientList = NetServer_GetClientList( g_pServer, G_iRegisteredClientList);
  180.         pClient = NetClientList_FindClient(pClientList, iUserId);
  181.         if (pClient)
  182.             NetClient_Disconnect(pClient);
  183.     }
  184.     else
  185.     {
  186.         // User is a guest ?
  187.         iGuestID = Join_FindKeyFromStringData(    g_stJoins.m_iUser_szLogin,_szLogin);
  188.         if (iGuestID>0)
  189.         {
  190.             // find client
  191.             var Net_Client pClient;
  192.             var Net_ClientList pClientList;
  193.             pClientList = NetServer_GetClientList( g_pServer, G_iGuestClientList);
  194.             // Guest identifier are negative
  195.             pClient = NetClientList_FindClient(pClientList, -iGuestID);
  196.             if (pClient)
  197.                 NetClient_Disconnect(pClient);
  198.         }
  199.     }
  200. }
  201.  
  202.  
  203.  
  204.  
  205.